/**
*   我们看下边的代码：
*      prices[j] - prices[k] + dp[i-1][k-1]
    在确定第j天是否要卖出股票的时候，我们可以把
        -prices[k] + dp[i-1][k-1]
    看做是前j -1天买入一支股票的最大利润。
    我们只需要记录这个最大利润即可，不需要 每次重新计算一遍，来看下代码
* 
*/
function maxProfit(prices) {
    var dp = [];
    for (let i = 0; i < 3; i++) {
        dp[i] = [];
        for (let j = 0; j < prices.length; j++) {
            dp[i][j] = 0;
        }
    }

    for (let i = 1; i <= 2; i++) {
        var max = Number.MIN_VALUE / 2;
        for (let j = 1; j < prices.length; j++) {
            // 记录第 j - 1 天买一支股票的最大利润
            max = Math.max(max, dp[i - 1][j - 1] - prices[j - 1]);
            // dp[i][j-1]表示第 j 天没有任何操作的最大利润
            // prices[j] + max 表示第 j 天卖出的最大利润
            dp[i][j] = Math.max(dp[i][j - 1], prices[j] + max);
        }
    }
    return dp[2][prices.length - 1];
}